package code.c02_list.javaApp;

import java.util.Arrays;
import java.util.Collections;
import java.util.LinkedList;

/**
 * @author thinkpad - 83start
 * @version v1.0
 * @create 2022/9/28 17:30
 * @package code.c02_list.linkedList
 * @description 链表的实现类：LinkedList类，它采用循环双链表存储对象序列
 */

public class LinkedListClass {
    public static void main(String[] args) {
        // ================== 构造方法 ==================
        LinkedList linkedList = new LinkedList<Integer>();
        linkedList.add(1);
        linkedList.add(3);

        linkedList.add(5);

        // ================== 主要方法 ==================
        // 判断链表是否为空，如果没有元素则返回 true
        System.out.println(linkedList.isEmpty());

        // 返回链表中的元素个数
        System.out.println(linkedList.size());

        // 向列表的尾部添加指定元素
        linkedList.add(8);

        // 在列表的指定位置插入指定元素
        linkedList.add(2,5);

        // 如果列表中包含指定元素，则返回true
        System.out.println(linkedList.contains(3));

        // 返回列表中指定位置的元素
        System.out.println(linkedList.get(2));

        // 用指定元素替换列表中指定位置的元素
        System.out.println((Integer) linkedList.set(3, 5));

        // 返回此列表中第一次出现指定圆度的索引。如果没有此元素，则返回 -1
        System.out.println(linkedList.indexOf(9));

        // 返回此列表中最后出现的指定元素的索引，如果不存在这个元素，则返回 -1
        System.out.println(linkedList.lastIndexOf(9));

        //移除列表中指定位置的元素
        System.out.println(linkedList.remove(3));

        // 移除列表中第一次出现指定元素
        System.out.println(linkedList.remove(new Integer(4)));

        // 从列表中移除所有的元素
        linkedList.clear();


        // ================== 实现排序：基本数据类型 ==================
        Integer[] sortArr = {4, 3, 2, 1, 2, 32, 4, 5, 3, 77, 3, 2, 3, 88, 6, 89, 6, 7, 67, 67, 6, 7, 83};
        LinkedList<Integer> sortLinkedList = new LinkedList<Integer>(Arrays.asList(sortArr));
        System.out.println("原排序数组 ===> " + sortLinkedList.toString());

        Collections.sort(sortLinkedList);
        System.out.println("正排序数组 ===> " + sortLinkedList.toString());

        Collections.sort(sortLinkedList,Collections.reverseOrder());
        System.out.println("反排序数组 ===> " + sortLinkedList.toString());

    }

}


